package net;


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 网络上传文件 客户端
 */
public class TCPFileCopyClient {

    public static void main(String[] args) throws Exception {

        //1.客户端连接服务端，获取socket
        Socket socket = new Socket(InetAddress.getLocalHost(), 8888);

        //2.创建读取磁盘文件的输入流
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\IdeaCode\\a.jpg"));

        //3.bytes就是图片对应的字节数组
        byte[] bytes = StreamUtils.streamToByteArray(bis);

        //4.通过socket获取到输入流，将bytes数据发送给服务器
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        bos.write(bytes);   //将文件对应的字节数组的内容，写入到数据通道
        bis.close();
        socket.shutdownOutput();//设置写入数据的结束标记

        //5.接收从服务端回复的消息
        InputStream inputStream = socket.getInputStream();
        //使用StreamUtils 直接将 inputStream读取到的内容转换成字符串
        String str = StreamUtils.streamToString(inputStream);
        System.out.println(str);

        //6.关闭相关流
        bos.close();
        inputStream.close();
        socket.close();

    }
}
